perm filename ROMANS.MF[1,3] blob
sn#549042 filedate 1980-12-05 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 % This file contains special letters and letter combinations,
C00003 00003 "Dotless letter i"
C00004 00004 "Dotless letter j"
C00005 00005 "The German letter ss (sharp s)"
C00007 00006 "The ligature ae"
C00009 00007 "The ligature oe"
C00012 ENDMK
C⊗;
% This file contains special letters and letter combinations,
% compatible with the alphabet ``romanl''.
% Codes \¬013, \¬014, \¬033--\¬035 are used.
"Dotless letter i";
call charbegin('013,5,sc,sc,px,0,px.slant+.5pwi+(sc-2)pu);
hpen; x1=x2=good1 .5r; top1y1=m+ssdoo; bot1y2=0;
w1 draw 1..2; % stem
if lcs≠0: call `a sserif(1,1,2,-lcs); % upper serif
call `b serif(2,1,1,-lcs);
call `c serif(2,1,1,lcs); % lower serif
fi.
"Dotless letter j";
call charbegin('014,6,sc,0,px,pd,px.slant+.5pwi-2pu);
hpen; x1=x2=good1(r-2.5u);
if fixwidth=0: lft3x4=round(-.5u);
else: lft3x4=round u;
fi;
cpen; bot3y4=-.9d; w3 draw 4; % bulb
hpen; top1y1=m+ssdoo; bot1y2=-1/3 d;
bot0y5=-d-oo; y4=y6; lft0x6=lft3x4; x5=.5[x2,x6];
draw |w1|1..|w1#|2{0,-1}..|w0#|5{-1,0}..6{0,1}; % stem and tail
if lcs≠0: call `a sserif(1,1,2,-lcs); % serif
fi.
"The German letter ss (sharp s)";
call charbegin('033,9,sc,0,ph,0,ph.slant-pu);
hpen; x1=x2=good1 2.5u; rt2x3=round(r-u); rt2x4=round(r-.5u);
bot1y1=0; y2=.5[m,y5];
top0y5=h+oo; x5=.5[x2,x3]; y3=.5[m,y5]; y4=.4m;
w1 draw 1..2; % stem
call `a arc(5,2,w1); % shoulder
top0y6=m; lft0x6=round(rt1x2+u);
call `b arc(5,3,w2); call `c arc(6,3,w2); % upper bowl
cpen; rt3x8=round 5u; bot3y8=.1e;
w3 draw 8; % bulb
hpen; lft0x9=lft3x8; y9=y8; x7=.4[lft0x9,x4]; bot0y7=-oo;
call `d arc(6,4,w2); call `e arc(7,4,w2); % lower bowl
w0 draw 7{-1,0}..9{0,1}; % link
if lcs≠0: call `e serif(1,1,2,-lcs); % serif
x10=x1; y10=y6; call `f serif(10,1,1,-lcs); % spur
fi.
"The ligature ae";
call charbegin('034,12,0,0,px,0,pe.slant+lcic);
cpen; lft3x1=round 1.25u;
if top3(top3top6e+2)>.9[e,m]: top3y1=.9[e,m];
else: y1=top3top6e+2;
fi;
w3 draw 1; % bulb
hpen; lft0x2=lft3x1; y2=y1; x3=3.75u; top0y3=m+oo;
x4=good1 5.5u; y4=1/3[e,m];
w0 draw 2{0,1}..3{1,0}; call `a arc(3,4,w1); % shoulder
x9=x4; y9=e; w1 draw 4..9; % stem
x8=7u; y8=e; x10=x11+.25u; y10=.5[w6,y9];
x11=good2 1.5u; y11=.2[w6,y9];
x12=2.75u; bot0y12=-oo; x13=3.75u; y13=.015[y12,y9];
x14=x9; y14=.3[y12,y9];
draw |w0#|9{-1,0}..|.9[w0,w2]|10..|w2#|11{0,-1}..
|.7[w0,w2]|12{1,0}..|w0#|13..14(..8); % left bowl
if w2>1.5u: rt2x21=round(r-.75u);
else: x21=good2(r-1.5u);
fi;
x22=x4; x23=r-4u; top0y23=m+oo; y21=e; y22=.5[y25,y23];
bot0y25=-oo; x25=x23+.5u;
new save; save=sqrttwo; new sqrttwo; sqrttwo=sqrt 1.3save;
call `a arc(23,21,w2); % right bowl
new sqrttwo; sqrttwo=save;
call `b arc(23,22,w1); call `c arc(25,22,w1); % stroke
w0 draw 9..21; % bar
if w0=w1: x26=x21; x27-x25=x21-x23; y27=y22;
new aa; x26=aa[x25,x27]; y26=(sqrt(1-aa.aa))[y27,y25];
else: rt0x26=rt2x21; x27=x26; y26=.5e-1;y27=e;
fi;
w0 draw 25{1,0}..26(..27). % point
"The ligature oe";
call charbegin('035,14,0,0,px,0,pe.slant+lcic);
hpen; x3=good1 7.5u;
if w2>1.5u: lft2x2=round .75u; rt2x21=round(r-.75u);
else: x2=good2 1.5u; x21=good2(r-1.5u);
fi;
x1-x2=x3-x1;
top0y1=m+oo; bot0y2=-oo; y2=y3;
call `d darc(1,2,w2); % left part of left bowl
call `e darc(1,3,w1); % right part of left bowl
x22=x3; x23=r-4u; top0y23=m+oo; y21=e; y22=.5[y25,y23];
bot0y25=-oo; x25=x23+.5u;
new save; save=sqrttwo; new sqrttwo; sqrttwo=sqrt 1.3save;
call `a arc(23,21,w2); % right bowl
new sqrttwo; sqrttwo=save;
call `b arc(23,22,w1); call `c arc(25,22,w1); % stroke
new aa; y21=y24=aa[y22,y23]; x24-1=(sqrt(1-aa.aa))[x23,x22];
w0 draw 24..21; % bar
if w0=w1: x26=x21; x27-x25=x21-x23; y27=y22;
new aa; x26=aa[x25,x27]; y26=(sqrt(1-aa.aa))[y27,y25];
else: rt0x26=rt2x21; x27=x26; y26=.5e-1;y27=e;
fi;
w0 draw 25{1,0}..26(..27). % point